Selective brightness control in photography

ABSTRACT

A computer determines one or more brightness levels associated with a first set of pixels within a light source in an image. The computer determines a brightness effect on a second set of pixels in the image based on the one or more brightness levels associated with the first set of pixels within the light source. The computer receives input to alter at least one of the one or more brightness levels associated with the first set of pixels within the light source. The computer alters one or more brightness levels associated with the second set of pixels in the image based on the received input and the determined brightness effect.

TECHNICAL FIELD

The present invention relates generally to manipulation of potentialphotographs, and more particularly to selective brightness control inpotential photographs.

BACKGROUND

Photography has become a major form of human expression over the pastseveral decades and technology has been leading the way in helping usdevelop clearer and more aesthetically pleasing photos. The developmentof digital photo technology has catapulted the quality of photos toanother stratosphere, allowing the entire photo to be manipulated byutilizing filters, controlling tint, brightness, color, and othervarious factors. In today's day and age, a photo can be taken andaltered in ways never dreamed of a decade ago.

SUMMARY

The present invention provides a method, system, and computer programproduct for altering the brightness level of a pixel. A computerdetermines one or more brightness levels associated with a first set ofpixels within a light source in an image. The computer determines abrightness effect on a second set of pixels in the image based on theone or more brightness levels associated with the first set of pixelswithin the light source. The computer receives input to alter at leastone of the one or more brightness levels associated with the first setof pixels within the light source. The computer alters one or morebrightness levels associated with the second set of pixels in the imagebased on the received input and the determined brightness effect.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a brightness control system, in accordance with anembodiment of the invention.

FIG. 2 is a flowchart illustrating the operations of the brightnesscontrol program of FIG. 1 in determining a brightness level for eachpixel in a potential photograph and the amount of the brightness levelattributable to a light source in the potential photograph, inaccordance with an embodiment of the invention.

FIG. 3 is a block diagram depicting the hardware components of thebrightness control system of FIG. 1, in accordance with an embodiment ofthe invention.

DETAILED DESCRIPTION

Embodiments of the present invention will now be described in detailwith reference to the accompanying Figures.

FIG. 1 illustrates brightness control system 100, in accordance with anembodiment of the invention. In an exemplary embodiment, brightnesscontrol system 100 includes computing device 110, however, in otherembodiments, brightness control system may include multiple computingdevices all interconnected via a network.

Computing device 110 includes brightness program 112. In the exampleembodiment, computing device 110 is a camera. However, in otherembodiments, computing device 110 may be a desktop computer, a notebook,a laptop computer, a tablet computer, a handheld device, a smart-phone,a thin client, or any other electronic device or computing systemcapable of receiving and sending data to and from other computingdevices, via network 135. Although not shown, optionally, computingdevice 110 can comprise a cluster of web devices executing the samesoftware to collectively process requests. Computing device 110 isdescribed in more detail with reference to FIG. 3.

User interface 114 includes components used to receive input from a userand transmit the input to an application residing on computing device110. In the example embodiment, user interface 114 uses a combination oftechnologies and devices, such as device drivers, to provide a platformto enable users of computing device 110 to interact with brightnessprogram 112. In the example embodiment, user interface 114 receivesinput, such as user input via a touchscreen and/or textual inputreceived from a physical input device, such as a keyboard, via a devicedriver that corresponds to the physical input device.

Brightness program 112 is a program capable of identifying light sourceswithin a photo about to be taken. Furthermore, brightness program 112 iscapable of determining a brightness level for each pixel of a potentialphotograph (for example, each pixel of a potential photograph displayedin on the LCD screen of a camera) associated with each identified lightsource. In the example embodiment, brightness program 112 is alsocapable of providing a user of computing device 110 with the option toincrease or reduce the brightness of any of the identified lightsources. The operations and functions of brightness program 112 aredescribed in more detail with reference to FIG. 2.

FIG. 2 is a flowchart illustrating the operations of brightness program112 in determining a brightness level for each pixel in a potentialphotograph/image and the amount of the brightness level attributable toa light source in the potential photograph. In the example embodiment,brightness program 112 detects a potential photograph that is about tobe taken by the user of computing device 110 (step 202). In the exampleembodiment, brightness program 112 may communicate with the operatingsystem of computing device 110 in order to determine that a potentialphotograph is being displayed on an LCD screen of computing device 110.In this example embodiment, brightness program 112 determines that apotential photograph is about to be taken if the LCD screen is on andphotographic software (present on computing device 110) is focused on anobject or area for a period of time exceeding a threshold value. In theexample embodiment, the threshold value is 3 seconds, however, in otherembodiments, the threshold value may be another value. In furtherembodiments, brightness program 112 may determine that a potentialphotograph is about to be taken if the LCD screen is on, which isdetermined by way of communication with the operating system ofcomputing device 110, as described above.

Brightness program 112 receives user input via user interface 114indicating one or more sources of light in the potential photograph(step 204). In the example embodiment, brightness program 112 receives auser selection of one or more light sources in the potential photo bythe way of the user of computing device 110 highlighting, hovering over,or selecting a light source depicted in the photograph via atouchscreen. For example, if two street lamps are present in a potentialphotograph, the user of computing device 110 may select or highlight oneor both areas of the potential photograph which contain the streetlamp(s).

Brightness program 112 determines brightness level at the source oflight (or sources of light) indicated in the user input (step 206). Inthe example embodiment, brightness program 112 analyzes each pixel(utilizing color analysis software) associated with the light sources todetermine a color value for three basic colors: red, green, and blue. Inthe example embodiment, a color value of 255 is the maximum value eachcolor can have. In other embodiments, brightness program 112 may analyzeeach pixel for a different number of spectrum colors in order todetermine a brightness value associated with each pixel. Brightnessprogram 112 then clusters the portions of the image that have the samered/green/blue color values or substantially similar red/green/bluecolor values. For example, the pixels in the center of or directlyaround a light source in an image, such as a street lamp, may havesubstantially similar red/green/blue values. Therefore, brightnessprogram 112 would cluster them together. Brightness program 112 thencalculates the brightness level of each identified cluster utilizing theequation below:L=√{square root over ((0.241R ²+0.691G ²+0.068B ²))}  (1)

Referring to equation 1, L is the brightness level, R is the red colorvalue, G is the green color value, and B is the blue color value.

Brightness program 112 determines the brightness level at one or moreother pixels within the potential photograph (step 208). In the exampleembodiment, brightness program 112 determines the brightness level at apixel or a cluster of pixels at distance D from the source of light.Brightness program 112 determines the brightness level in the samemanner as described above in step 206.

Brightness program 112 receives user input indicating an alteration ofthe brightness level of the indicated light source (step 210). In theexample embodiment, the user of computing device 110 inputs informationdetailing an alteration of the brightness level of the indicated lightsource. For example, the user of computing device 110 may manipulate ameter displayed via user interface 114 up or down in order to increaseor decrease the brightness level corresponding to the indicated lightsource. In other embodiments, the user of computing device 110 may inputa specific value corresponding to a brightness level or select apre-configured brightness option (i.e.—high, medium, low). For example,the user of computing device may input that he/she wishes to reduce thebrightness level of the indicated light source by 15%. In this example,the brightness level at the source is reduced by 15%, therefore, if theinitial brightness level was 100 lux, the altered brightness level atthe source would be 85 lux. In other embodiments, the user of computingdevice may alter the individual color values in order to increase orreduce the brightness level at the source. In this embodiment, afteralteration of the color values, brightness program 112 re-calculates thebrightness level at the source by utilizing equation 1 in the samemanner as described above.

Brightness program 112 determines the brightness effect on each of theone or more pixels of the potential photograph based on the alterationat the indicated light source (step 212). In the example embodiment,brightness program 112 utilizes the equation below to determine thebrightness effect on each pixel of the photograph.

$\begin{matrix}{E_{D} = \frac{\left( {L_{initial} - L_{altered}} \right)}{D^{2}}} & (2)\end{matrix}$

With regard to equation 1 above, L_(intial) is the initial illuminationlevel (or brightness level) at the light source, L_(altered) is thealtered illumination level (or brightness level) at the light source), Dis the distance between the light source and a pixel of the potentialphotograph, and E_(D) is the illumination level at distance D.

In the example embodiment, the distance D is a relative distancedetermined based on the potential photograph. For example, for apotential photograph with a light source at point A in the potentialphotograph, brightness program 112 may assume that the distance betweenpoint A and another point, point B is x. Utilizing this value,brightness program 112 may determine a relative distance (a distance interms of x) for each pixel in the photograph. Therefore, if the distanceto point C from point A is 2x, and the distance to point E from point Ais 4x, brightness program 112 determines an illumination level at pointC and point E as shown below:

$\begin{matrix}{{E\left( {{po}\;{int}\; C} \right)} = {\frac{\left( {L_{initial} - L_{altered}} \right)}{\left( {2x} \right)^{2}} = \frac{\left( {L_{initial} - L_{altered}} \right)}{4x}}} & (3) \\{{E\left( {{po}\;{int}\; E} \right)} = {\frac{\left( {L_{initial} - L_{altered}} \right)}{\left( {4x} \right)^{2}} = \frac{\left( {L_{initial} - L_{altered}} \right)}{16x}}} & (4)\end{matrix}$

Brightness program 112 alters the brightness level of each pixel in thepotential photograph based on the alteration of the brightness level atthe indicated light source (step 214). In the example embodiment, inorder to determine the amount to alter the brightness level, brightnessprogram uses equation 5 as shown below:L _(D)(altered)=L _(D)(initial)−E _(D)  (5)

In Equation 5, L_(D) (altered) is the brightness level at distance Dafter alteration of the brightness level at the light source, L_(D)(initial) is the brightness level at distance D prior to alteration ofthe brightness level at the light source, and E_(D) is the brightnessimpact at distance D calculated above.

In other embodiments, brightness program 112 alters the brightness levelof each pixel (based on the determined brightness effect at each pixel)proportionately to the alteration to the brightness level at the lightsource. In this other embodiment, brightness program 112 utilizesequation 6 below:

$\begin{matrix}{E_{D} = \frac{L_{initial}}{D^{2}}} & (6)\end{matrix}$

In Equation 6, E_(D) is the brightness impact at distance D based on theinitial brightness level at the source (L_(initial)), and D is thedistance between the light source and a pixel of the photograph, asstated above. Brightness program 112 then multiples the calculatedbrightness impact (E_(D)) by the percentage of increase or decrease withregard to the brightness level at the source. For example, if thebrightness level at the indicated light source is decreased by 5%,brightness program 112 multiplies the determined brightness effect by 5%in order to determine the brightness effect of a pixel at distance D.Brightness program 112 then utilizes equation 5 to determine thebrightness level of a pixel at distance D (after alteration at the lightsource). Therefore, if the determined brightness effect at a first pixel(at distance D from the indicated light source) is determined to be 10lux, brightness program 112 decreases the brightness level at distance Dby 0.5 lux).

The brightness level at a pixel may be due to multiple light sources.For example, the first pixel reference above may have a total brightnesslevel of 100 with 10 lux attributable to the indicated light source and90 lux attributable to another light source in the potential photograph.Therefore, if both light sources are selected, brightness program 112may alter the brightness level based on the determined brightness effecton the first pixel from each of the light sources.

Once the brightness level are adjusted to the appropriate levels basedon the input of user of computing device 110, the user of computingdevice 110 is given the option to take the photograph, continueadjusting, or to revert back to the original image/potential photograph.

The foregoing description of various embodiments of the presentinvention has been presented for purposes of illustration anddescription. It is not intended to be exhaustive nor to limit theinvention to the precise form disclosed. Many modifications andvariations are possible. Such modifications and variations that may beapparent to a person skilled in the art of the invention are intended tobe included within the scope of the invention as defined by theaccompanying claim.

FIG. 3 depicts a block diagram of components of brightness controlsystem 100 (i.e., computing device 110) of FIG. 1, in accordance with anembodiment of the present invention. It should be appreciated that FIG.3 provides only an illustration of one implementation and does not implyany limitations with regard to the environments in which differentembodiments may be implemented. Many modifications to the depictedenvironment may be made.

Computing device 110 may include one or more processors 302, one or morecomputer-readable RAMs 304, one or more computer-readable ROMs 306, oneor more computer readable storage media 308, device drivers 312,read/write drive or interface 314, network adapter or interface 316, allinterconnected over a communications fabric 318. Communications fabric318 may be implemented with any architecture designed for passing dataand/or control information between processors (such as microprocessors,communications and network processors, etc.), system memory, peripheraldevices, and any other hardware components within a system.

One or more operating systems 310, and one or more application programs311, for example, brightness program 112 and user interface 114, arestored on one or more of the computer readable storage media 308 forexecution by one or more of the processors 302 via one or more of therespective RAMs 304 (which typically include cache memory). In theillustrated embodiment, each of the computer readable storage media 308may be a magnetic disk storage device of an internal hard drive, CD-ROM,DVD, memory stick, magnetic tape, magnetic disk, optical disk, asemiconductor storage device such as RAM, ROM, EPROM, flash memory orany other computer-readable tangible storage device that can store acomputer program and digital information.

Computing device 110 may also include a R/W drive or interface 314 toread from and write to one or more portable computer readable storagemedia 326. Application programs 311 on computing device 110 may bestored on one or more of the portable computer readable storage media326, read via the respective R/W drive or interface 314 and loaded intothe respective computer readable storage media 308.

Computing device 110 may also include a network adapter or interface316, such as a TCP/IP adapter card or wireless communication adapter(such as a 4G wireless communication adapter using OFDMA technology).Application programs 311 on computing device 110 may be downloaded tothe computing device from an external computer or external storagedevice via a network (for example, the Internet, a local area network orother wide area network or wireless network) and network adapter orinterface 316. From the network adapter or interface 316, the programsmay be loaded onto computer readable storage media 308. The network maycomprise copper wires, optical fibers, wireless transmission, routers,firewalls, switches, gateway computers and/or edge servers.

Computing device 110 may also include a display screen 320, a keyboardor keypad 322, and a computer mouse or touchpad 324. Device drivers 312interface to display screen 320 for imaging, to keyboard or keypad 322,to computer mouse or touchpad 324, and/or to display screen 320 forpressure sensing of alphanumeric character entry and user selections.The device drivers 312, R/W drive or interface 314 and network adapteror interface 316 may comprise hardware and software (stored on computerreadable storage media 308 and/or ROM 306).

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of theinvention. However, it should be appreciated that any particular programnomenclature herein is used merely for convenience, and thus theinvention should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature. The presentinvention may be a system, a method, and/or a computer program product.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge devices. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or device. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The terminology used herein was chosen to best explain the principles ofthe embodiment, the practical application or technical improvement overtechnologies found in the marketplace, or to enable others of ordinaryskill in the art to understand the embodiments disclosed herein.

What is claimed is:
 1. A computer program product for altering thebrightness level of a pixel, comprising a computer-readable storagemedium having program code embodied therewith, the program codeexecutable by a processor of a computer to perform a method comprising:a computer determining that an image is about to be captured bydetecting that photographic software is operating and focused on theimage for greater than a threshold time; the computer receiving a firstuser input detailing a light source in the image; the computerdetermining one or more brightness levels associated with a first set ofpixels within the light source; the computer determining a brightnesseffect on a second set of pixels in the image based on the determinedone or more brightness levels associated with the first set of pixels;the computer determining one or more brightness levels associated withthe second set of pixels in the image; the computer receiving a seconduser input to alter at least one of the one or more brightness levelsassociated with the first set of pixels; the computer determining asecond brightness effect on the second set of pixels based on the one ormore altered brightness levels associated with the first set of pixels;and the computer altering the one or more brightness levels associatedwith the second set of pixels in the image based on subtracting thedetermined second brightness effect on the second set of pixels from thedetermined one or more brightness levels associated with the second setof pixels.